package Servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import BusinessDelegate.FacadeBusinessDelegate;
import EntitiesDTO.ItemSolicitudCotizacionDTO;

/**
 * Servlet implementation class for Servlet: IniciarNuevaCompra
 *
 */
 public class IniciarNuevaCompra extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public IniciarNuevaCompra() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	}  	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String action = (String) request.getParameter("action_compra");
		if (action == null) {
			this.getAllRodamientos(request, response);
		}

		if (action != null && action.equals("Agregar")) {
			this.agregarItemCompra(request, response);
		}	
	}

	private void getAllRodamientos(HttpServletRequest request,
			HttpServletResponse response) {

		HttpSession session = request.getSession(true);

		List<ItemSolicitudCotizacionDTO> rodamientos = null;
		try {
			rodamientos = FacadeBusinessDelegate.getInstance()
					.getRodamientosItems();
		} catch (NamingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		session.setAttribute("rodamientosCompra", rodamientos);

		RequestDispatcher dispatcher = request
				.getRequestDispatcher("./NuevaCompra.jsp");

		try {
			dispatcher.forward(request, response);
		} catch (ServletException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	@SuppressWarnings("unchecked")
	private void agregarItemCompra(HttpServletRequest request,
			HttpServletResponse response) {

		HttpSession session = request.getSession(true);

		String rodamiento = request.getParameter("selectRodamiento");
		String cantidad = request.getParameter("cantRodamiento");

		List<ItemSolicitudCotizacionDTO> itemCotizacion = (List<ItemSolicitudCotizacionDTO>) session
				.getAttribute("itemsCompra");

		List<ItemSolicitudCotizacionDTO> rodamientos = (List<ItemSolicitudCotizacionDTO>) session
		.getAttribute("rodamientosCompra");

		
		if (itemCotizacion == null) {
			itemCotizacion = new ArrayList<ItemSolicitudCotizacionDTO>();
		}

		ItemSolicitudCotizacionDTO item = new ItemSolicitudCotizacionDTO();
		try {
			item.setRodamiento(FacadeBusinessDelegate.getInstance()
					.getRodamientobyID(Integer.parseInt(rodamiento)));
			item.setCantidad(Integer.parseInt(cantidad));
			itemCotizacion.add(item);
			for(ItemSolicitudCotizacionDTO i: rodamientos){
				if(i.getRodamiento().getCodigo().equals(item.getRodamiento().getCodigo())){
					item.setFechavencimiento(i.getFechavencimiento());
					item.setPrecionUnitario(i.getPrecionUnitario());
				}
			}
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (NamingException e) {
			e.printStackTrace();
		}

		session.setAttribute("itemsCompra", itemCotizacion);
		RequestDispatcher dispatcher = request
				.getRequestDispatcher("./NuevaCompra.jsp");

		try {
			dispatcher.forward(request, response);
		} catch (ServletException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	
}